package org.example.mybooksystem.Controller;

import org.example.mybooksystem.Modle.UserInfo;
import org.example.mybooksystem.Service.UserService;
import org.example.mybooksystem.constant.Constants;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpSession;

/**
 * Created with IntelliJ IDEA.
 * Description:做渐进主义的改良派,不做完没注意的速成派
 * User: XALEXC
 * Date: 2024-12-07
 * Time: 5:56
 */
@RequestMapping("/user") // 服务跑起来之后,浏览器要访问的路径名
@RestController // 服务器只能识别并打开 @Controller 修饰的方法 @RestController 里面包含了 @Controller
public class UserController {
    @Autowired
    UserService userService;
    // 一个页面首先要完成登录的逻辑,验证好用户名和密码之后,就要创建session
    @RequestMapping("/login")
    public Boolean login(String username, String password, HttpSession session) {
        // 判断传过来的数据中有没有用户名和密码,如果没有则直接退出
        if (!StringUtils.hasLength(username) || !StringUtils.hasLength(password)) {
            return false;
        }
        // 判断用户名和密码对不对
        // 1. 根据用户名去查找用户信息
        UserInfo userInfo=userService.getUserInfoByName(username);
        // 2. 比对密码是否正确
        if(userInfo==null||userInfo.getId()<=0) {
            return false;
        }
        if (password.equals(userInfo.getPassword())) {
            // 代码走到这里,就说明用户名和密码是正确的
            // 现在创建session
            // 如果想在session中多存一些信息,可以去存userinfo
            // 为了安全,手动设置密码为空
            userInfo.setPassword("");
            session.setAttribute(Constants.SESSION_USER_KEY, userInfo);
            return true;
        }

        return false;
    }
}
